/*
 * Een klein optiemenu om de menselijke speler te vragen of hij of zij codebreker of -maker wil zijn.
 */

package meesterbrein;

import java.awt.Color;
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.SpringLayout;

/**
 * Wederom: Deze klasse gaat helemaal aan het begin van het spel miepen of de speler codemaker of -breker wil zijn, en geeft dit door aan controller.
 * @author Laurens van Dijk, s3012557 en Gerdriaan Mulder, s3048764
 */
public class Optionmenu implements ActionListener {

    private JButton breaker, maker;
    private JFrame menu;
    private Container menucontainer;
    private SpringLayout layout;
    private static final int MWIDTH = 300, MHEIGHT = 150;

    /**
     * constraints instellen.
     */
    public void setConstraints() //constraints voor het menutje instellen.
    {
        menucontainer.setLayout(layout);

        breaker = new JButton("Codebreker");
        maker = new JButton("Codemaker");

        menucontainer.add(breaker);
        menucontainer.add(maker);
        
        layout.putConstraint(SpringLayout.NORTH, maker, -55, SpringLayout.SOUTH, menucontainer);
        layout.putConstraint(SpringLayout.EAST, maker, -20, SpringLayout.EAST, menucontainer);
        layout.putConstraint(SpringLayout.SOUTH, maker, -20, SpringLayout.SOUTH, menucontainer);
        layout.putConstraint(SpringLayout.WEST, maker, 20, SpringLayout.WEST, menucontainer);

        layout.putConstraint(SpringLayout.NORTH, breaker, 20, SpringLayout.NORTH, menucontainer);
        layout.putConstraint(SpringLayout.EAST, breaker, -20, SpringLayout.EAST, menucontainer);
        layout.putConstraint(SpringLayout.SOUTH, breaker, 55, SpringLayout.NORTH, menucontainer);
        layout.putConstraint(SpringLayout.WEST, breaker, 20, SpringLayout.WEST, menucontainer);
        
    }

    /**
     * functie om het menu enigzins overzichtelijk (lees: zichtbaar) te maken. Voegt ook actionlisteners toe.
     */
    public void toonMenu()
    {
        menu.setPreferredSize(new Dimension(MWIDTH, MHEIGHT));
        menu.setResizable(false);

        setConstraints();

        breaker.addActionListener(this);
        maker.addActionListener(this);
    }

    /**
     * maakt een JFrame om als menu toe te dienen, en voegt buttons e.d. toe.
     */
    public Optionmenu()
    {
        menu = new JFrame("CHOOSE YOUR DESTINY!");
        menucontainer = menu.getContentPane();
        layout = new SpringLayout();
        toonMenu();
        menucontainer.setVisible(true);
        menu.setVisible(true);
        menu.pack();
        menu.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );  
    }

    /**
     * dubieuze functie, die doorgeeft wat de gebruiker heeft gekozen en ervoor zorgt dat het spel start.
     * @param ae actionevent
     */
    @Override
    public void actionPerformed(ActionEvent ae) {
    if(ae.getSource() == breaker) {
        Controller.mensBreker = true;
        Controller.optiesgedaanenzo = true;
        Controller.genereerSpelBord();
        menu.dispose();}
    else if(ae.getSource() == maker) {
        Controller.mensBreker = false;
        Controller.optiesgedaanenzo = true;
        Controller.genereerSpelBord();
        menu.dispose();}

    }
}
